home *** CD-ROM | disk | FTP | other *** search
/ 100 Plus Great Games 2 / 100PLUSV2.BIN / games / WakeRace.dxr / Internal_5_Special Effects functions.ls < prev    next >
Encoding:
Text File  |  2002-01-25  |  3.6 KB  |  134 lines

  1. global gfxEffectsList, gfxTimeKeeper
  2.  
  3. on gfx_Init
  4.   gfxEffectsList = []
  5.   gfxTimeKeeper = []
  6.   repeat with n = 200 to 300
  7.     sprite(n).puppet = 0
  8.   end repeat
  9. end
  10.  
  11. on gfx_Update theOffset
  12.   repeat with n = 1 to count(gfxEffectsList)
  13.     sprite(gfxEffectsList[n][2]).loc = gfxEffectsList[n][4] - theOffset
  14.     case gfxEffectsList[n][1] of
  15.       #smoke:
  16.         gfx_updateSmoke(n)
  17.       #tireTrack:
  18.         gfx_updateTireTrack(n)
  19.       #dust:
  20.         gfx_updateSmoke(n)
  21.     end case
  22.   end repeat
  23. end
  24.  
  25. on gfx_ClearAllEffects
  26.   repeat with n = 200 to 300
  27.     sprite(n).puppet = 0
  28.   end repeat
  29. end
  30.  
  31. on gfx_CreateEffect fxType, fxLoc, fxLifeTime, theOffset, fxRotation, creatorSpriteNum, bUseTimeKeeper
  32.   if voidp(theOffset) then
  33.     theOffset = point(0, 0)
  34.   end if
  35.   if voidp(bUseTimeKeeper) then
  36.     bUseTimeKeeper = 1
  37.   end if
  38.   theSpriteNum = 0
  39.   repeat with n = 200 to 300
  40.     if sprite(n).puppet = 0 then
  41.       theSpriteNum = n
  42.       exit repeat
  43.     end if
  44.   end repeat
  45.   if theSpriteNum <> 0 then
  46.     bCreateEffect = 0
  47.     if bUseTimeKeeper then
  48.       bCreateEffect = gfx_checkTimeKeeper(fxType, creatorSpriteNum)
  49.     else
  50.       bCreateEffect = 1
  51.     end if
  52.     if bCreateEffect then
  53.       newEffect = [fxType, theSpriteNum, the ticks + fxLifeTime, fxLoc]
  54.       gfx_addEffect(newEffect)
  55.       sprite(theSpriteNum).puppet = 1
  56.       sprite(theSpriteNum).member = getMember(fxType)
  57.       sprite(theSpriteNum).rotation = fxRotation
  58.       sprite(theSpriteNum).blend = 60
  59.       sprite(theSpriteNum).ink = 36
  60.       sprite(theSpriteNum).loc = fxLoc - theOffset
  61.       sprite(theSpriteNum).width = member(sprite(theSpriteNum).member).width
  62.       sprite(theSpriteNum).height = member(sprite(theSpriteNum).member).height
  63.       if bUseTimeKeeper then
  64.         gfx_registerWithTimeKeeper(creatorSpriteNum, fxType, the ticks)
  65.       end if
  66.     end if
  67.   end if
  68. end
  69.  
  70. on getMember fxType
  71.   case fxType of
  72.     #dust:
  73.       return member("Dust")
  74.     #smoke:
  75.       return member("Smoke")
  76.     #tireTrack:
  77.       return member("Skid")
  78.   end case
  79. end
  80.  
  81. on gfx_addEffect newEffect
  82.   add(gfxEffectsList, newEffect)
  83. end
  84.  
  85. on gfx_RemoveEffect effectNum
  86.   deleteAt(gfxEffectsList, effectNum)
  87. end
  88.  
  89. on gfx_updateSmoke theEffectNum
  90.   theSpriteNum = gfxEffectsList[theEffectNum][2]
  91.   theLifeTime = gfxEffectsList[theEffectNum][3]
  92.   sprite(theSpriteNum).width = sprite(theSpriteNum).width + 2
  93.   sprite(theSpriteNum).height = sprite(theSpriteNum).height + 2
  94.   sprite(theSpriteNum).blend = sprite(theSpriteNum).blend - 2
  95.   sprite(theSpriteNum).rotation = sprite(theSpriteNum).rotation + 10
  96.   if (the ticks > theLifeTime) or (sprite(theSpriteNum).blend < 5) then
  97.     gfx_RemoveEffect(theEffectNum)
  98.     sprite(theSpriteNum).puppet = 0
  99.   end if
  100. end
  101.  
  102. on gfx_updateTireTrack theEffectNum
  103.   theSpriteNum = gfxEffectsList[theEffectNum][2]
  104.   theLifeTime = gfxEffectsList[theEffectNum][3]
  105.   sprite(theSpriteNum).blend = sprite(theSpriteNum).blend - 3
  106.   if (the ticks > theLifeTime) or (sprite(theSpriteNum).blend < 5) then
  107.     gfx_RemoveEffect(theEffectNum)
  108.     sprite(theSpriteNum).puppet = 0
  109.   end if
  110. end
  111.  
  112. on gfx_checkTimeKeeper theEffect, theSpriteNum
  113.   repeat with n = 1 to count(gfxTimeKeeper)
  114.     if gfxTimeKeeper[n][1] = theSpriteNum then
  115.       if gfxTimeKeeper[n][2] = theEffect then
  116.         if the ticks > (gfxTimeKeeper[n][3] + 10) then
  117.           deleteAt(gfxTimeKeeper, n)
  118.           return 1
  119.         else
  120.           return 0
  121.         end if
  122.         next repeat
  123.       end if
  124.       deleteAt(gfxTimeKeeper, n)
  125.       return 1
  126.     end if
  127.   end repeat
  128.   return 1
  129. end
  130.  
  131. on gfx_registerWithTimeKeeper theSpriteNum, theEffect, theTime
  132.   add(gfxTimeKeeper, [theSpriteNum, theEffect, theTime])
  133. end
  134.